package com.ticket.system.service.impl;

import java.util.Date;
import java.util.List;

import com.ticket.common.utils.DateUtils;
import com.ticket.common.utils.StringUtils;
import com.ticket.system.domain.vo.ConsumeRecordVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ticket.system.mapper.YanchuConsumeRecordMapper;
import com.ticket.system.domain.YanchuConsumeRecord;
import com.ticket.system.service.IYanchuConsumeRecordService;

/**
 * 消费记录（包含充值）Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-12-12
 */
@Service
public class YanchuConsumeRecordServiceImpl implements IYanchuConsumeRecordService 
{
    @Autowired
    private YanchuConsumeRecordMapper yanchuConsumeRecordMapper;

    /**
     * 查询消费记录（包含充值）
     * 
     * @param id 消费记录（包含充值）主键
     * @return 消费记录（包含充值）
     */
    @Override
    public YanchuConsumeRecord selectYanchuConsumeRecordById(Long id)
    {
        return yanchuConsumeRecordMapper.selectYanchuConsumeRecordById(id);
    }

    /**
     * 查询消费记录（包含充值）列表
     * 
     * @param yanchuConsumeRecord 消费记录（包含充值）
     * @return 消费记录（包含充值）
     */
    @Override
    public List<YanchuConsumeRecord> selectYanchuConsumeRecordList(YanchuConsumeRecord yanchuConsumeRecord)
    {
        return yanchuConsumeRecordMapper.selectYanchuConsumeRecordList(yanchuConsumeRecord);
    }

    /**
     * 新增消费记录（包含充值）
     * 
     * @param yanchuConsumeRecord 消费记录（包含充值）
     * @return 结果
     */
    @Override
    public int insertYanchuConsumeRecord(YanchuConsumeRecord yanchuConsumeRecord)
    {
        return yanchuConsumeRecordMapper.insertYanchuConsumeRecord(yanchuConsumeRecord);
    }

    /**
     * 修改消费记录（包含充值）
     * 
     * @param yanchuConsumeRecord 消费记录（包含充值）
     * @return 结果
     */
    @Override
    public int updateYanchuConsumeRecord(YanchuConsumeRecord yanchuConsumeRecord)
    {
        return yanchuConsumeRecordMapper.updateYanchuConsumeRecord(yanchuConsumeRecord);
    }

    /**
     * 批量删除消费记录（包含充值）
     * 
     * @param ids 需要删除的消费记录（包含充值）主键
     * @return 结果
     */
    @Override
    public int deleteYanchuConsumeRecordByIds(Long[] ids)
    {
        return yanchuConsumeRecordMapper.deleteYanchuConsumeRecordByIds(ids);
    }

    /**
     * 删除消费记录（包含充值）信息
     * 
     * @param id 消费记录（包含充值）主键
     * @return 结果
     */
    @Override
    public int deleteYanchuConsumeRecordById(Long id)
    {
        return yanchuConsumeRecordMapper.deleteYanchuConsumeRecordById(id);
    }

    /**
     * 查询充值记录列表（pc 集团管理员和财务管理员）
     *
     * @param time
     * @param status
     * @param orderNo
     * @param keyName
     * @return
     */
    @Override
    public List<ConsumeRecordVO> rechargeList(String startTime,String endTime, Integer status, String orderNo, String keyName) {
        Date dayStartTime = null;
        Date dayEndTime = null;
        if (StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)){
            dayStartTime = DateUtils.parseDate(startTime);
            dayEndTime = DateUtils.parseDate(endTime);

        }
        return yanchuConsumeRecordMapper.rechargeList(dayStartTime,dayEndTime,status,orderNo,keyName);
    }

    /**
     * 查询消费记录列表（pc 集团管理员和财务管理员）
     *
     * @param time
     * @param operaId
     * @param orderNo
     * @param keyName
     * @param cardNum
     * @param type
     * @return
     */
    @Override
    public List<ConsumeRecordVO> consumeList(String startTime,String endTime, Integer operaId, String orderNo, String keyName, String cardNum, Integer type) {
        Date dayStartTime = null;
        Date dayEndTime = null;
        if (StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)){
            dayStartTime = DateUtils.parseDate(startTime);
            dayEndTime = DateUtils.parseDate(endTime);

        }
        return yanchuConsumeRecordMapper.consumeList(dayStartTime,dayEndTime,operaId,orderNo,keyName,cardNum,type);
    }

    /**
     * 小程序用户消费记录（观演卡 储值卡）
     *
     * @param cardNum
     * @param type
     * @param userId
     * @return
     */
    @Override
    public List<ConsumeRecordVO> mobileList(String cardNum, Integer type, Long userId) {
        return yanchuConsumeRecordMapper.mobileList(cardNum,type,userId);
    }
}
